<?xml version='1.0'?>
<!--=======================================================================
	Copyright:	umlungu consulting (pty) ltd
	Author:		Alan Benington
	Started:	2008-06-14
	Status:		release	
	Version:	2.0.0
	Build:		20080614
	License:	GNU General Public License
	======================================================================= -->

<!--=======================================================================
	Development Notes:
	==================
	20080614:	Initial release.
	=======================================================================	-->

<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>
	<xsl:variable name="newslast">4</xsl:variable>

<!--=======================
	Match templates section
	======================= -->
	
	<!-- 'Normal' content -->
	<xsl:template match="blogs/blog" mode="content">
		<xsl:param name="nocontent"/>
		<xsl:call-template name="Intro"><xsl:with-param name="type">title</xsl:with-param></xsl:call-template>
		<div id="paragraphs">
			<xsl:if test="not($nocontent='yes')">
				<xsl:apply-templates select="text | bloghtml | blogtext"/>
			</xsl:if>
		</div>
	</xsl:template>

	<xsl:template match="blogs/blog" mode="formcontent">
		<xsl:call-template name="Intro">
			<xsl:with-param name="title" select="title"/>
		</xsl:call-template>
		<xsl:apply-templates select="text | bloghtml | blogtext"/>
	</xsl:template>
	
	
	<!-- 'Blog' content -->
	<xsl:template match="blogspace" mode="blogs">
		<div id="paragraphs">
			<xsl:call-template name="Intro"><xsl:with-param name="type">prompt</xsl:with-param></xsl:call-template>
			<xsl:apply-templates select="topics/topic/blog/bloghtml"/>
		</div>
		<xsl:choose>
			<xsl:when test="$blogs='all'">
				<xsl:apply-templates select="topics/topic/blogs/blog" mode="blogs">
					<xsl:sort data-type="text" order="descending" select="date/@create"/>
				</xsl:apply-templates>
			</xsl:when>
			<xsl:otherwise>
				<xsl:apply-templates select="topics/topic/blogs/blog[@id=$blogs]" mode="comment"/>
			</xsl:otherwise>
		</xsl:choose>
		
	</xsl:template>

	<xsl:template match="blogs/blog" mode="blogs">
		<xsl:call-template name="Blog"/>
		<xsl:call-template name="BlogLinks">
			<xsl:with-param name="thislink"><xsl:value-of select="$link"/><xsl:text>_blog</xsl:text></xsl:with-param>
		</xsl:call-template>
	</xsl:template>
	
	<xsl:template match="blogs/blog" mode="comment">
		<xsl:call-template name="Blog"/>
		<xsl:call-template name="BlogLinks"/>
		<xsl:apply-templates select="comments"/>
	</xsl:template>
	
	<xsl:template match="comments">
		<a name="Comments">
			<xsl:apply-templates select="comment[@ok='yes' or not(@ok)]">
				<xsl:sort order="descending" select="@date"/>
			</xsl:apply-templates>
		</a>
	</xsl:template>
	
	<xsl:template match="comments/comment">
		<div id="comment-intro">
			<h4><xsl:value-of select="title"/></h4>
			<xsl:value-of select="author"/> | 
			<xsl:value-of select="date"/> | 
			<xsl:value-of select="substring(substring-after(@date, 'T'), 0, 6)"/>
		</div>
		<div class="comment">
			<xsl:apply-templates select="text | bloghtml | blogtext"/>
		</div>
	</xsl:template>

	<!-- FAQ content-->
	<xsl:template match="blogspace" mode="faqs">
		<div id="paragraphs">
			<xsl:call-template name="Intro">
				<xsl:with-param name="type">prompt</xsl:with-param>
			</xsl:call-template>
			<xsl:apply-templates select="topics" mode="faqs-list"/>
			<xsl:apply-templates select="topics/topic[@count!='0']" mode="faqs"/>
		</div>
	</xsl:template>
	
	<xsl:template match="topics" mode="faqs-list">
		<script language="javascript">
			<xsl:text>var xfaqs = new Array(</xsl:text>
			<xsl:for-each select="topic[@count!='0']">
				<xsl:if test="position()!=1"><xsl:text>, </xsl:text></xsl:if>
				<xsl:text>'</xsl:text><xsl:text>faq-</xsl:text><xsl:value-of select="@name"/><xsl:text>'</xsl:text>
			</xsl:for-each>
			<xsl:text>);</xsl:text>
		</script>
		<select>
			<xsl:attribute name="onmouseover">javascript:x_page.DropShowHide(this)</xsl:attribute>
			<xsl:attribute name="onchange">
				<xsl:text>x_page.ToggleList(this, xfaqs);</xsl:text>
			</xsl:attribute>
			<xsl:apply-templates select="topic[@count!='0']" mode="faqs-list"/>
		</select>
	</xsl:template>
	
	<xsl:template match="topics/topic" mode="faqs-list">
		<option id="faqs-list">
			<xsl:attribute name="value"><xsl:text>faq-</xsl:text><xsl:value-of select="@name"/></xsl:attribute>
			<xsl:value-of select="text()"/>
		</option>
	</xsl:template>
	  	
	<xsl:template match="topics/topic" mode="faqs">
		<div class="show-head">
			<xsl:attribute name="id">
				<xsl:text>faq-</xsl:text><xsl:value-of select="@name"/>
			</xsl:attribute>
			<xsl:if test="position()!=1"> 
				<xsl:attribute name="style"><xsl:text>display:none;</xsl:text></xsl:attribute>
			</xsl:if>
			<h4><xsl:value-of select="text()"/></h4>
			<xsl:apply-templates select="blogs" mode="faqs"/>
			<xsl:apply-templates select="blog"/>
		</div>
	</xsl:template>
	
	<xsl:template match="topics/topic/blogs" mode="faqs">
		<xsl:apply-templates select="blog" mode="faqs">
			<xsl:sort data-type="text" order="ascending" select="title"/>
		</xsl:apply-templates>
	</xsl:template>
	
	<xsl:template match="topics/topic/blogs/blog" mode="faqs">
		<xsl:variable name="thisid"><xsl:value-of select="parent::*/@topic"/><xsl:text>-</xsl:text><xsl:value-of select="@id"/></xsl:variable>
		<div class="show-on" style="display:block;">
			<xsl:attribute name="id"><xsl:value-of select="$thisid"/><xsl:text>-on</xsl:text></xsl:attribute>
			<div class="paranorm">
				<a>
					<xsl:attribute name="href">
						<xsl:text>javascript:x_page.ToggleDisplay('</xsl:text><xsl:value-of select="$thisid"/><xsl:text>-on');</xsl:text>
						<xsl:text>x_page.ToggleDisplay('</xsl:text><xsl:value-of select="$thisid"/><xsl:text>-off');</xsl:text>
					</xsl:attribute>
					<xsl:value-of select="title"/>
				</a>
			</div>
		</div>
		<div class="show-off" style="display:none;">
			<xsl:attribute name="id"><xsl:value-of select="$thisid"/><xsl:text>-off</xsl:text></xsl:attribute>
			<div class="parabold">
				<a>
					<xsl:attribute name="href">
						<xsl:text>javascript:x_page.ToggleDisplay('</xsl:text><xsl:value-of select="$thisid"/><xsl:text>-on');</xsl:text>
						<xsl:text>x_page.ToggleDisplay('</xsl:text><xsl:value-of select="$thisid"/><xsl:text>-off');</xsl:text>
					</xsl:attribute>
					<xsl:value-of select="title"/>
				</a>
			</div>
			<xsl:apply-templates select="text | bloghtml | blogtext"/>
		</div>
	</xsl:template>

	<!-- News content -->
	<xsl:template match="blogspace" mode="news">
		<div id="paragraphs">
			<xsl:call-template name="Intro"><xsl:with-param name="type">prompt</xsl:with-param></xsl:call-template>
		</div>
		<xsl:apply-templates select="topics/topic[@name=$topic]/blogs/blog" mode="news">
			<xsl:sort data-type="text" order="descending" select="date/@create"/>
		</xsl:apply-templates>
		<div class="news-prev">
			<h3>Previous news</h3>
		</div>
		<xsl:apply-templates select="topics/topic[@name=$topic]/blogs/blog" mode="newsall">
			<xsl:sort data-type="text" order="descending" select="date/@create"/>
		</xsl:apply-templates>
	</xsl:template>

	<xsl:template match="blogs/blog" mode="news">
		<xsl:if test="position() &lt; $newslast">
			<div class="news-intro">
				<h2><xsl:value-of select="title"/></h2>
				<div>
					<xsl:value-of select="date"/>
				</div>
			</div>
			<div class="news-text">
				<xsl:value-of select="blogtext"/>
				<span class="news-more">
					<a>
						<xsl:attribute name="href">
							<xsl:value-of select="$BaseLinkUrl"/>
							<xsl:choose>
								<xsl:when test="$link='news_archive'">
									<xsl:text>news_archive_news</xsl:text>
								</xsl:when>
								<xsl:otherwise>
									<xsl:value-of select="$link"/>
								</xsl:otherwise>
							</xsl:choose>
							<xsl:text>&amp;blogs=</xsl:text>
							<xsl:value-of select="@id"/>
						</xsl:attribute>
						<xsl:text>Click here for more</xsl:text>
					</a>
				</span>
			</div>
		</xsl:if>
	</xsl:template>
	
	<xsl:template match="blogs/blog" mode="newsall">
		<xsl:if test="position() &gt;= $newslast">
			<div class="news-link">
				<xsl:value-of select="title"/>
				<a>
					<xsl:attribute name="href">
						<xsl:value-of select="$BaseLinkUrl"/>
						<xsl:choose>
							<xsl:when test="$link='news_archive'"><xsl:text>news_archive_news</xsl:text></xsl:when>
							<xsl:otherwise><xsl:value-of select="$link"/></xsl:otherwise>
						</xsl:choose>
						<xsl:text>&amp;blogs=</xsl:text><xsl:value-of select="@id"/>
					</xsl:attribute>
					<xsl:text>Click here for more</xsl:text>
				</a>
			</div>
		</xsl:if>
	</xsl:template>
	
	<xsl:template match="blogspace" mode="newslatest">
		<xsl:call-template name="Intro">
			<xsl:with-param name="type">default</xsl:with-param>
		</xsl:call-template>
		<div id="other_content">
			<xsl:apply-templates select="topics/topic[@name=$topic]/blogs/blog" mode="newslatest">
				<xsl:sort data-type="text" order="descending" select="date/@create"/>
			</xsl:apply-templates>
		</div>
	</xsl:template>

	<xsl:template match="blogs/blog" mode="newslatest">
		<xsl:if test="position() &lt; 2">
			<div class="news-intro">
				<h2>
					<xsl:apply-templates select="title"/>
				</h2>
				<div>
					<xsl:apply-templates select="date"/>
				</div>
			</div>
			<div class="news-text">
				<xsl:apply-templates select="blogtext"/>
			</div>
			<div class="news-text">
				<xsl:apply-templates select="bloghtml"/>
			</div>
		</xsl:if>
	</xsl:template>
	
	
	<!-- page content -->
	<xsl:template match="page">
		<a name="pageform">
			<xsl:apply-templates/>
		</a>
	</xsl:template>

	<!-- Section match necassary for compatibility with NM xml pages -->
	<xsl:template match="page/section">
		<xsl:apply-templates/>
	</xsl:template>

	<xsl:template match="page/title">	
		<h5><xsl:apply-templates/></h5>
	</xsl:template>
	
	<xsl:template match="page/applet">
		<xsl:copy-of select="."/>
	</xsl:template>
	
	<xsl:template match="page/object">
		<xsl:copy-of select="."/>
	</xsl:template>
	
	<xsl:template match="page/html">	
		<xsl:copy-of select="."/>
	</xsl:template>
	
	<xsl:template match="page/para">
		<xsl:choose>
			<xsl:when test="@type='head'">
				<div class="parahead"><xsl:apply-templates/></div>
			</xsl:when>
			<xsl:when test="@type='bold'">
				<div class="parabold"><xsl:apply-templates/></div>
			</xsl:when>
			<xsl:otherwise>
				<div class="paranorm"><xsl:apply-templates/></div>
			</xsl:otherwise>
		</xsl:choose>
	</xsl:template>
	
	<xsl:template match="page/notes">
		<div class="parabold"><xsl:value-of select="@label"/></div>
		<ul class="note">
			<xsl:apply-templates select="note"/>
		</ul>
	</xsl:template>
	
	<xsl:template match="page/notes/note">
		<li>
			<span class="bold"><xsl:value-of select="@label"/></span><xsl:text> - </xsl:text>
			<xsl:apply-templates/>
		</li>
	</xsl:template>
	
	<!-- frame -->
	<xsl:template match="frame">
		<iframe frameborder="0">
			<xsl:attribute name="src"><xsl:value-of select="."/></xsl:attribute>
			<xsl:attribute name="width">
				<xsl:choose>
					<xsl:when test="@width"><xsl:value-of select="@width"/></xsl:when>
					<xsl:otherwise>436px</xsl:otherwise>
				</xsl:choose>
			</xsl:attribute>
			<xsl:attribute name="height">
				<xsl:choose>
					<xsl:when test="@width"><xsl:value-of select="@height"/></xsl:when>
					<xsl:otherwise>600px</xsl:otherwise>
				</xsl:choose>
			</xsl:attribute>
			<xsl:attribute name="scrolling">
				<xsl:choose>
					<xsl:when test="@scroll='yes'">auto</xsl:when>
					<xsl:when test="@scroll"><xsl:value-of select="@scroll"/></xsl:when>
					<xsl:otherwise>no</xsl:otherwise>
				</xsl:choose>
				
			</xsl:attribute>
		</iframe>
	</xsl:template>
	
	<!-- home page content -->
	<xsl:template match="page/headline">
		<div id="home-line">
			<xsl:attribute name="style">
				<xsl:text>top:</xsl:text><xsl:value-of select="//page/headline/@top"/><xsl:text>px;</xsl:text>
				<xsl:text>left:</xsl:text><xsl:value-of select="//page/headline/@left"/><xsl:text>px;</xsl:text>
			</xsl:attribute>
			<xsl:apply-templates/>
		</div>
	</xsl:template>
	
	<xsl:template match="page/headline/para">
		<h1>
			<xsl:if test="@blog">
				<xsl:attribute name="onmouseover">
					<xsl:text>javascript:x_page.ShowHome(</xsl:text><xsl:value-of select="@blog"/><xsl:text>);</xsl:text>
				</xsl:attribute>
				<xsl:attribute name="onmouseout">
					<xsl:text>javascript:x_page.HideHome(</xsl:text><xsl:value-of select="@blog"/><xsl:text>);</xsl:text>
				</xsl:attribute>
			</xsl:if>
			<xsl:apply-templates/>
		</h1>
	</xsl:template>
	
	<xsl:template match="page/flash">
		<xsl:param name="setvis"/>
		<xsl:param name="which"/>
	<!--
		<script language="JavaScript">
			<xsl:text>function SetFlashVarDef(){</xsl:text>
			<xsl:text>x_page.SetFlashVar("</xsl:text>
			<xsl:value-of select="@name"/>
			<xsl:for-each select="vars/var">
				<xsl:text>", "</xsl:text>
				<xsl:value-of select="@name"/>
				<xsl:text>", "</xsl:text>
				<xsl:value-of select="."/>
			</xsl:for-each>
			<xsl:text>");}</xsl:text>
		</script>
		<xsl:variable name="swfobj"><xsl:value-of select="@name"/><xsl:text>_so</xsl:text></xsl:variable>
		<script type="text/javascript">
			<xsl:text>var </xsl:text><xsl:value-of select="$swfobj"/><xsl:text> = new SWFObject("</xsl:text>
			<xsl:value-of select="@name"/><xsl:text>.swf", "</xsl:text>
			<xsl:value-of select="@name"/><xsl:text>", "</xsl:text>
			<xsl:value-of select="@width"/><xsl:text>", "</xsl:text>
			<xsl:value-of select="@height"/><xsl:text>", "</xsl:text>
			<xsl:value-of select="@version"/><xsl:text>", "</xsl:text>
			<xsl:value-of select="@background"/><xsl:text>");</xsl:text>
			<xsl:apply-templates select="params/param">
				<xsl:with-param name="obj" select="$swfobj"/>
			</xsl:apply-templates>
			<xsl:apply-templates select="vars/var">
				<xsl:with-param name="obj" select="$swfobj"/>
			</xsl:apply-templates>
			<xsl:text>var isvis = </xsl:text><xsl:value-of select="$swfobj"/><xsl:text>.write("</xsl:text><xsl:value-of select="@id"/><xsl:text>")</xsl:text>
			<xsl:if test="$setvis='yes'">
				<xsl:text>if (isvis) {</xsl:text>
				<xsl:text>x_page.ToggleVisible("</xsl:text><xsl:value-of select="$which"/><xsl:text>");</xsl:text>
				<xsl:text>x_page.ToggleVisible("swf-hp-none");</xsl:text>
				<xsl:text>x_page.ToggleVisible("swf-hp-none");</xsl:text>
				<xsl:text>}</xsl:text>
			</xsl:if>
		</script>
	-->
	</xsl:template>
	
	<xsl:template match="page/flash/params/param">
		<xsl:param name="obj"/>
		<xsl:value-of select="$obj"/><xsl:text>.addParam("</xsl:text><xsl:value-of select="@name"/><xsl:text>", "</xsl:text><xsl:value-of select="."/><xsl:text>");</xsl:text>
	</xsl:template>
	
	<xsl:template match="page/flash/vars/var">
		<xsl:param name="obj"/>
		<xsl:value-of select="$obj"/><xsl:text>.addVariable("</xsl:text><xsl:value-of select="@name"/><xsl:text>", "</xsl:text><xsl:value-of select="."/><xsl:text>");</xsl:text>
	</xsl:template>
	
	<xsl:template match="upload">
		<script language="javascript">
			x_page.ImageTag('<xsl:value-of select="file"/>')
		</script>
	</xsl:template>
	
	<xsl:template match="content/error">
		<xsl:comment><xsl:value-of select="$newline"/>
			<xsl:text>Error::</xsl:text><xsl:value-of select="@name"/><xsl:value-of select="$newline"/>
			<xsl:value-of select="$tabchar"/><xsl:text>Message::</xsl:text><xsl:value-of select="message"/><xsl:value-of select="$newline"/>
			<xsl:value-of select="$tabchar"/><xsl:text>StackTrace::</xsl:text><xsl:value-of select="stacktrace"/><xsl:value-of select="$newline"/>
		</xsl:comment>
	</xsl:template>

	
<!--=======================
	Named templates section
	======================= -->
	
	<xsl:template name="Content">
		<xsl:variable name="blogspace" select="/content/blogspace/@name"/>
		<!-- this will render the shopcart related info box unless the shopcart="no" is specified in the link-->
		<xsl:apply-templates select="profile/shopcart"/>

		<!-- Master content switch -->
		<xsl:choose>
			<!--shop categories-->
			<xsl:when test="$link='site_shop'">
				<xsl:apply-templates select="blogspace" mode="shop"/>
			</xsl:when>
			<!--Products in shop category-->
			<xsl:when test="$link='site_shop_cat'">
				<xsl:apply-templates select="blogspace" mode="shop-cat"/>
			</xsl:when>
			<!--Blogs Content-->
			<xsl:when test="$spaces='blogs'">
				<xsl:apply-templates select="blogspace" mode="blogs"/>
			</xsl:when>
			<xsl:when test="$link='news_archive'">
				<xsl:apply-templates select="blogspace" mode="news"/>
			</xsl:when>
			<xsl:when test="$link='news_latest'">
				<xsl:apply-templates select="blogspace" mode="newslatest"/>
			</xsl:when>
			<xsl:when test="$spaces= 'faqs'">
				<xsl:apply-templates select="blogspace" mode="faqs"/>
			</xsl:when>
			<xsl:when test="$link='site_search' or $link='error_search' or $link='error_search_none'">
				<xsl:apply-templates select="blogspace/topics/topic[@name=$topic]/blogs/blog[@id=$blogs]" mode="formcontent"/>
				<xsl:apply-templates select="SearchResults"/>
			</xsl:when>
			<xsl:otherwise>
				<!-- normal content rendering -->
				<xsl:apply-templates select="blogspace/topics/topic[@name=$topic]/blogs/blog[@id=$blogs]" mode="content">
					<xsl:with-param name="nocontent" select="page/@nocontent"/>
				</xsl:apply-templates>
			</xsl:otherwise>
		</xsl:choose>
				
		<xsl:apply-templates select="page"/>
		
		<xsl:if test="$device=''">
			<xsl:apply-templates select="//website/links/link[@name=$link]/links"/>
		</xsl:if>
		<xsl:apply-templates select="error"/>
	</xsl:template>
	
	<xsl:template name="Intro">
		<xsl:param name="type"/>
		<div id="intro">
			<h1>
				<xsl:choose>
					<xsl:when test="$type='prompt'"><xsl:value-of select="//website/links/link[@name=$link]/prompt"/></xsl:when>
					<xsl:otherwise><xsl:value-of select="title"/></xsl:otherwise><!--$type='title' or 'contact'-->
				</xsl:choose>
			</h1>
			<!--
			<xsl:if test="$type!='contact'">
				<xsl:call-template name="Print"/>
			</xsl:if>
			-->
		</div>
	</xsl:template>
	
	<xsl:template name="Print">
		<xsl:if test="$device=''">
			<div id="prn">
				<a href="javascript:x_page.PopPrint()">Print 
					<img src="images/print.gif" width="14" height="14"/>
				</a>
			</div>
		</xsl:if>
	</xsl:template>

	<xsl:template name="NewsYear">
		<xsl:param name="year"/>
		<div class="news-year">
			<xsl:value-of select="$year"/>
		</div>
		<xsl:apply-templates select="blog[substring(@date,1,4)=$year]" mode="newsyear">
			<xsl:sort data-type="text" order="descending" select="@date"/>
		</xsl:apply-templates>
	</xsl:template>

	<xsl:template match="SearchResults">
		<div id="paranews">
			<xsl:apply-templates/>
		</div>
	</xsl:template>

	<xsl:template match="SearchResult">
		<div class="srch-reslt">
			<a>
				<xsl:attribute name="href">
					<xsl:value-of select="url"/>
				</xsl:attribute>
				<xsl:value-of select="title"/>
			</a>
			<br/>
			<span>
				<xsl:value-of select="description"/>
			</span>
		</div>
	</xsl:template>
	
	
<!--=======================
	Blog templates section
	======================= -->
	<xsl:template name="Blog">
		<div class="blog-intro">
			<h2><xsl:value-of select="title"/></h2>
			<xsl:value-of select="author"/> | 
			<xsl:value-of select="date"/> | 
			<xsl:value-of select="substring(substring-after(@date, 'T'), 0, 6)"/>
		</div>
		<div class="blog">
			<xsl:apply-templates select="text | bloghtml | blogtext"/>
		</div>
	</xsl:template>

	<xsl:template name="BlogLinks">
		<xsl:param name="thislink"/>
		<div class="blog-links">
			<a>
				<xsl:attribute name="href">
					<xsl:value-of select="$BaseLinkUrl"/>
					<xsl:text>blogs_blog</xsl:text>
					<xsl:text>&amp;topics=</xsl:text>
					<xsl:value-of select="$topics"/>
					<xsl:text>&amp;topic=</xsl:text>
					<xsl:value-of select="$topic"/>
					<xsl:text>&amp;blogs=</xsl:text>
					<xsl:value-of select="@id"/>
					<xsl:text>#Comments</xsl:text>
				</xsl:attribute>
				<xsl:value-of select="count(comments/comment)"/>
				<xsl:text> comments on this article</xsl:text>
			</a>
			<xsl:call-template name="nobrspace"/>
			<xsl:text>|</xsl:text>
			<xsl:call-template name="nobrspace"/>
			<a>
				<xsl:attribute name="href">
					<xsl:value-of select="$BaseLinkUrl"/>
					<xsl:text>blogs_blog</xsl:text>
					<xsl:text>&amp;topics=</xsl:text>
					<xsl:value-of select="$topics"/>
					<xsl:text>&amp;topic=</xsl:text>
					<xsl:value-of select="$topic"/>
					<xsl:text>&amp;blogs=</xsl:text>
					<xsl:value-of select="@id"/>
					<xsl:text>#CommentForm</xsl:text>
				</xsl:attribute>
				<xsl:text>Add a comment</xsl:text>
			</a>
		</div>
	</xsl:template>

</xsl:stylesheet>
